home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 003 / mrim004.arc / MICRORIM.004
Encoding:
Text File  |  1987-02-18  |  37.8 KB  |  987 lines

  1.  
  2.  
  3.  
  4.      Volume 2 - Number 1                                       January 1987
  5.      ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  6.      ::                  ***************                                 ::
  7.      ::               *********************                              ::
  8.      ::            ***************************                           ::
  9.      ::          ******************************                          ::
  10.      ::        ****************    ************                          ::
  11.      ::      ***************       *************                         ::
  12.      ::     ***************       **************                         ::
  13.      ::    ***************      ***************                          ::
  14.      ::   ****************   *****************                           ::
  15.      ::  *****************   *************                               ::
  16.      ::  *****************   **************          Microrim ONLINE     ::
  17.      :: ******************   ***************         """""""""""""""     ::
  18.      :: ******************   ****************     Online Technical News  ::
  19.      :: ******************   *****************                           ::
  20.      :: ******************   ******************                          ::
  21.      :: ******************   *******************                         ::
  22.      ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  23.      Technical tips, techniques, and announcements from Microrim, Inc.
  24.  
  25.      Microrim ONLINE is published electronically approximately every month
  26.      by Microrim, Inc. and distributed exclusively on the Microrim Bulletin
  27.      Board System (BBS).  You can obtain your copy free of charge by
  28.      downloading it from the TECH-ED area of the FILES section.  (206) 881-
  29.      8119.  Setup:  8 data bits, 1 stop bit, No parity, and 300 or 1200
  30.      baud; operating 24 hours, seven days a week.
  31.  
  32.      COPYRIGHT
  33.      """""""""
  34.      Copyright (c) 1986 by Microrim, Inc.  All rights reserved.  Microrim,
  35.      Inc. authorizes the free distribution of this document for educational
  36.      purposes as long as no charge is made and this document is distributed
  37.      exactly as is without modification.  Toward this end, this document
  38.      may be stored in, uploaded to, and downloaded from any Bulletin Board
  39.      Service (BBS) or electronic information service as long as no charge
  40.      is made.
  41.  
  42.      CONTRIBUTIONS
  43.      """""""""""""
  44.      You are encouraged to contribute to MICRORIM ONLINE.  Please upload
  45.      your article, application, or application story to the Microrim BBS or
  46.      send an IBM compatible disk in standard ASCII format to:
  47.  
  48.      Kay D. Dayss, Microrim ONLINE Editor
  49.      Microrim, Inc.
  50.      3925 159th Ave. N.E.
  51.      P.O. Box 97022
  52.      Redmond, WA  98073-9722
  53.  
  54.      By submitting an article or application to MICRORIM ONLINE, you agree
  55.      that the material is not confidential and that Microrim, Inc., may
  56.      use, duplicate, modify, publish, or sell it without obligation or
  57.      liability to you or anyone else.
  58.  
  59.  
  60.  
  61.  
  62.      MICRORIM ONLINE January 1987 -------------------------------- Page 1
  63.  
  64.  
  65.  
  66.  
  67.  
  68.      TRADEMARKS
  69.      """"""""""
  70.      R:BASE and MICRORIM are registered trademarks of Microrim, Inc.
  71.      XRW is a trademark of Microrim, Inc.
  72.      IBM is a registered trademark of International Business Machines Corp.
  73.      XT and AT are trademarks of International Business Machines Corp.
  74.  
  75.      DISCLAIMER
  76.      """"""""""
  77.      Microrim, Inc., makes no representation or warranties with respect to
  78.      the contents hereof, and specifically disclaims any implied warranties
  79.      of merchantability or fitness for any particular purpose.  Further,
  80.      Microrim, Inc., reserves the right to revise this publication and to
  81.      make changes in the content hereof without obligation to notify any
  82.      person of such revision or change and shall not be liable for errors
  83.      contained herein or for incidental or consequential damages in
  84.      connection with the furnishing, performance, or use of this material.
  85.      Opinions and product reviews appearing in MICRORIM ONLINE are those of
  86.      the author and not necessarily those of Microrim, Inc.
  87.  
  88.      ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  89.      ::                       TABLE OF CONTENTS                          ::
  90.      ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  91.  
  92.      TECHNICAL NOTES
  93.      R:BASE System V Version 1.1 Upgrade................................  3
  94.      Improve Security and Verify Entered Passwords...................... 13
  95.  
  96.      ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.      MICRORIM ONLINE January 1987 -------------------------------- Page 2
  129.  
  130.  
  131.  
  132.  
  133.  
  134.      ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  135.      ::                       TECHNICAL NOTES                            ::
  136.      ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  137.  
  138.  
  139.      """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  140.      R:BASE SYSTEM V VERSION 1.1 UPGRADE
  141.      """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  142.      DATE      :  12/86                   NUMBER       :  EX-12-1
  143.      PRODUCT   :  R:BASE SYSTEM V         VERSIONS     :  1.0 TO 1.1
  144.      CATEGORY  :  ANOMALIES               SUBCATEGORY  :  1.1 UPGRADE
  145.      """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  146.  
  147.      NEED:   What are the differences between R:BASE System V version 1.0
  148.      and the new R:BASE System V version 1.1?  What anomalies in R:BASE
  149.      System V version 1.0 were addressed in version 1.1?
  150.  
  151.  
  152.  
  153.      SOLUTION:   R:BASE System V version 1.1, provides connectivity
  154.      enhancements and also addresses anomalies found in version 1.0.
  155.  
  156.      ENHANCEMENTS:
  157.      ============
  158.  
  159.      The enhancements give you greater data import and export capabilities.
  160.      The R:BASE System V version 1.1 update gives you:
  161.  
  162.        o  Connectivity to mainframe databases with Lotus Development
  163.           Corporation's The Application Connection (T-A-C) in combination
  164.           with R:BASE System V FileGateway.
  165.        o  Connectivity to dBASE databases with the ability to export to
  166.           dBASE III and dBASE III PLUS files.
  167.        o  The ability to unload data into an ASCII file directly from the
  168.           R> prompt with the UNLOAD AS ASCII command.
  169.  
  170.      With R:BASE System V version 1.1 on your microcomputer, and Lotus's T-
  171.      A-C on both the mainframe and the microcomputer, your R:BASE System V
  172.      database has access to data in mainframe databases such as RAMIS,
  173.      FOCUS, SAS, APL/DI, ADRS2, IC/1, NOMAD2 and SQL.  T-A-C translates the
  174.      data in the mainframe database into a transfer file and then
  175.      FileGateway (from R:BASE System V version 1.1) loads the transfer file
  176.      directly into an R:BASE System V database.  You can also export data
  177.      to your mainframe with FileGateway by choosing the Lotus transfer file
  178.      format.  You then use Lotus's The Application Connection to transfer
  179.      the data to the mainframe.  This special connectivity saves you time
  180.      and prevents you from having to key data into both your mainframe and
  181.      your micro.
  182.  
  183.      ANOMALIES FIXED IN VERSION 1.1:
  184.      ==============================
  185.  
  186.      Anomalies in R:BASE System V version 1.0 have been addressed in
  187.      version 1.1.  Most of the anomalies in version 1.0 were minor and
  188.      occurred in only a few specialized situations and under unusual
  189.      conditions.  Some anomalies were intermittent and others only happened
  190.      under certain conditions.
  191.  
  192.  
  193.  
  194.      MICRORIM ONLINE January 1987 -------------------------------- Page 3
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.      The following five anomalies in R:BASE System V version 1.0 were
  202.      encountered more often than the others and have been corrected in
  203.      R:BASE System V version 1.1:
  204.  
  205.        o  In version 1.0, when you put a multi-tiered region on page two,
  206.           three, four, or five of a form, the region did not scroll
  207.           correctly.  The data loaded into the table correctly, but only
  208.           the first or the last tier scrolled, the other tiers did not move
  209.           up (or down).  Regions located on page one worked correctly.
  210.           Version 1.1 regions scroll correctly on all pages.
  211.  
  212.        o  In version 1.0, a rule to prevent duplicate rows did not always
  213.           work.
  214.  
  215.        o  In version 1.0, sometimes keys on columns would go bad.  These
  216.           bad keys could make it look as if you had duplicate rows in your
  217.           table when in fact you did not.  Corrupted keys also sometimes
  218.           made it look like data that was in your table had disappeared.
  219.           The data was still there, but you had to remove the key (or not
  220.           use it) to access the data.
  221.  
  222.        o  In version 1.0, if you attempted to delete data in a field with
  223.           the [F2], [Shift-F2], [Del], or spacebar keys during an edit
  224.           session, sometimes the computer would stop responding to your
  225.           keystrokes and you had to reboot the computer.
  226.  
  227.        o  Some version 1.0 users experienced anomalies with NOTE columns.
  228.           This was particularly apparent when customers attempted to do
  229.           illegal operations with NOTEs.  Instead of trapping the illegal
  230.           operation, R:BASE attempted to do it and sometimes data was
  231.           corrupted.  Now, in version 1.1, R:BASE traps more of the illegal
  232.           operations and gives error messages.
  233.  
  234.  
  235.      The following is a list of anomalies by product area.  Each of these
  236.      1.0 anomalies have been addressed in version 1.1 of R:BASE System V:
  237.  
  238.      ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  239.      APPLICATION EXPRESS ANOMALIES ADDRESSED IN VERSION 1.1
  240.      ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  241.  
  242.      o  MACROS
  243.  
  244.         If you pulled in a macro, in version 1.0, that already had $COMMAND
  245.         at the beginning, you may have gotten the error message, "I/O error
  246.         - Check for full disk" when you tried to modify the application.
  247.  
  248.         Also, if you pulled in a macro that contained a plus sign (+) to
  249.         continue a command line in either column 79 or 80, the plus sign
  250.         may have moved to the beginning of the next line when Application
  251.         EXPRESS wrote the binary application file (the .APX file).  After
  252.         that, the command may not have executed properly when the
  253.         application was run using the .APX file.  The .APP file (non-
  254.         compiled file) worked correctly and if you compiled the macro into
  255.         a stand-alone binary file using CODELOCK, it worked.
  256.  
  257.  
  258.  
  259.  
  260.      MICRORIM ONLINE January 1987 -------------------------------- Page 4
  261.  
  262.  
  263.  
  264.  
  265.  
  266.      o  PRINTING A REPORT
  267.  
  268.         In 1.0, a user happened to SET CASE ON.  The horizontal menu that
  269.         Application EXPRESS created to select the print output device had
  270.         "printer" spelled "Printer."  The IF statement to check for output
  271.         device said "IF ... = PRINTER."  With CASE ON, these were not
  272.         equal.
  273.  
  274.  
  275.      ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  276.      GATEWAY ANOMALIES ADDRESSED IN VERSION 1.1
  277.      ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  278.  
  279.      o  DISPLAY TABLES [F3] KEY
  280.  
  281.         In version 1.0, with both import and export, at the "Choose a
  282.         Table" menu, if you pressed [F3], then chose (ALL) to display all
  283.         tables, you could see the structure of all tables, even password-
  284.         protected ones that do not show up on the "Choose a Table" menu.
  285.  
  286.      o  IMPORTING WITH ADD (OPTION 1)
  287.  
  288.         With 1.0, you could not use "Add" (option 1 from the menu) to
  289.         import data into a table if you had deleted all the rows from the
  290.         table and packed the database with the PACK or RELOAD commands.
  291.         All other import options worked, and "Add" worked if you had not
  292.         packed the database.
  293.  
  294.      o  IMPORTING ASCII FIXED FIELD FILES
  295.  
  296.         With 1.0, if you imported an ASCII fixed field file, and chose to
  297.         replace the existing rows in a table, you needed to delete keys and
  298.         rebuild them.  Otherwise, a LIST of the table showed the correct
  299.         number of rows but the following command brought up all the new
  300.         rows as well as the old ones (that were supposed to have been
  301.         replaced):
  302.  
  303.         SELECT ALL FROM tblname WHERE colname = value
  304.  
  305.         If you deleted keys with the DELETE KEY command, the old rows no
  306.         longer displayed.
  307.  
  308.      o  IMPORTING FILES WITH MORE THAN 30,000 RECORDS
  309.  
  310.         In 1.0, after a large number of rows (about 32767), the row counter
  311.         changed to negative and began to count backwards.
  312.  
  313.      o  IMPORTING DOLLARS FROM LOTUS
  314.  
  315.         In version 1.0, when you imported dollars from Lotus, amounts were
  316.         off by $.01.  You had to bring the number in as REAL or DOUBLE and
  317.         then convert it to CURRENCY in R:BASE.
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.      MICRORIM ONLINE January 1987 -------------------------------- Page 5
  327.  
  328.  
  329.  
  330.  
  331.      ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  332.      GENERAL R:BASE ANOMALIES ADDRESSED IN VERSION 1.1
  333.      ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  334.  
  335.      o  KEYS
  336.  
  337.         Two anomalies with version 1.0 keys were addressed in version 1.1.
  338.         In the first anomaly, bad keys made it appear that there were
  339.         duplicate records in a table.  If column1 was keyed, and the key
  340.         had gone bad, and you issued the command:
  341.  
  342.         SELECT ALL FROM tblname WHERE textcol = value
  343.  
  344.         you might have seen two rows listed on the screen when there was
  345.         only one row that met the WHERE clause.  However, if you changed
  346.         the command to:
  347.  
  348.         SELECT ALL FROM tblname WHERE textcol CONTAINS value
  349.  
  350.         you saw only the one row because the CONTAINS operator does not use
  351.         keys.
  352.  
  353.         In the second anomaly, corrupted keys in version 1.0 made it look
  354.         like a row that really was in your database, was not there.  If you
  355.         used a keyed column in a WHERE clause with the EQ operator (which
  356.         uses keys), and the key was bad, the row was not found.  However,
  357.         if you used the CONTAINS operator (which does not use keys), the
  358.         row was found.
  359.  
  360.         The problem is easily corrected by deleting keys with the DELETE
  361.         KEY command and then rebuilding them with the BUILD KEY command.
  362.         R:BASE System V version 1.1 helps to prevent keys from getting
  363.         corrupted in the first place.
  364.  
  365.      o  BACKUP AND RESTORE
  366.  
  367.         In version 1.0, if had a RULES table or had defined VIEWs, and you
  368.         used the BACKUP ALL to back up your database, you could have some
  369.         difficulty restoring the database depending on the order of the
  370.         tables.  In the case of RULES, the problem occurred when there was
  371.         a rule making a value in one table dependent on a value in another
  372.         table and the RULES table appeared before the other two tables in
  373.         the table list.  During restoration R:BASE would restore RULES and
  374.         then start to restore the first data table.  R:BASE would then see
  375.         a rule violation because the second data table had not yet been
  376.         restored.  A similar situation could occur if tables containing
  377.         column definitions that were also in VIEWs were not restored before
  378.         the VIEW was restored.
  379.  
  380.         R:BASE System V version 1.1 resolves the situation by always
  381.         putting the RULES table and VIEWs last in the list when backing up
  382.         with the R:BASE System V BACKUP command.
  383.  
  384.      o  EXPAND
  385.  
  386.         In version 1.0, the EXPAND command removed read and modify
  387.         passwords (RPW and MPW) if there were any on the table.
  388.  
  389.  
  390.  
  391.  
  392.      MICRORIM ONLINE January 1987 -------------------------------- Page 6
  393.  
  394.  
  395.  
  396.  
  397.      o  EXPRESSIONS IN WHERE CLAUSES
  398.  
  399.         In version 1.0, sometimes, after a report with a lookup variable
  400.         had been printed, any command using an expression in a WHERE clause
  401.         would return the message:
  402.  
  403.         -ERROR- Cannot use an expression in a WHERE clause for this command
  404.  
  405.      o  JOIN
  406.  
  407.         In 1.0, if you used the JOIN command to join two tables based on a
  408.         common TEXT column and one of the two tables also had a NOTE type
  409.         column, the resulting table could have spurious characters in it.
  410.  
  411.      o  REMOVE COL AND EXPAND
  412.  
  413.         Whenever a computer is writing to disk, it is important to try to
  414.         keep from interrupting the process.  It is similar to trying to
  415.         stop a car on the freeway, there is a response time that can
  416.         sometimes cause skid marks.  In version 1.0, sometimes the REMOVE
  417.         COLUMN and EXPAND commands would not leave the table intact if you
  418.         aborted them by pressing the [Esc] key.  The numbers of rows could
  419.         be less or zero.  We have addressed this in version 1.1, and now it
  420.         is more difficult to cause damage.  However, we still do not
  421.         recommend interrupting any process that involves writing to disk
  422.         unless you are prepared to go to your backup.
  423.  
  424.      o  CHANGE COMMAND AND NOTE COLUMNS
  425.  
  426.         Using the CHANGE command to put a TEXT expression into a NOTE
  427.         column is not a legal operation.  In version 1.0, if you tried it
  428.         anyway, R:BASE may have put spurious characters into your table and
  429.         into memory.  In version 1.1, you get an error message.
  430.  
  431.      o  RULES, DUPLICATES, AND ENTER FORM
  432.  
  433.         If you had a rule to prevent duplicate rows from being entered,
  434.         version 1.0 forms did not check rows entered during the current
  435.         session against each other.  For example, if you had a rule to
  436.         prevent duplicate entries of an ID number, version 1.0 would allow
  437.         you to enter duplicates if you entered both rows without exiting to
  438.         the R>.
  439.  
  440.      o  SELECT, VIEWS, AND A SORTED BY CLAUSE
  441.  
  442.         In version 1.0, if you SELECT ALL FROM viewname SORTED BY colname,
  443.         even with ESC set on you could not cancel the command and abort out
  444.         of the process by pressing a key.  You could, however, escape from
  445.         the process if you removed the SORTED BY clause.
  446.  
  447.      o  UNLOAD AND NULL
  448.  
  449.         In version 1.0, if you unloaded data using the UNLOAD DATA command
  450.         with NULL set to blank, null values unloaded as multiple commas
  451.         (,,,,) where two commas = one field, three = two fields, etc.
  452.         Using INPUT, the data loaded back in correctly regardless of
  453.         whether NULL is set to blank,  or some other character.  However,
  454.         when a row ended with two or more null fields, the row did not load
  455.         back in correctly because the UNLOAD caused the row to be one comma
  456.  
  457.  
  458.      MICRORIM ONLINE January 1987 -------------------------------- Page 7
  459.  
  460.  
  461.  
  462.  
  463.  
  464.         short.  In version 1.1, rows load back in correctly in all cases.
  465.  
  466.      o  VIEWS, EDIT ALL, AND BROWSE
  467.  
  468.         In 1.0, EDIT ALL or BROWSE commands, performed on a single table
  469.         VIEW that had been defined with a WHERE clause, ignored the WHERE
  470.         clause.  In other words, all the rows were brought up instead of
  471.         only the rows selected by the WHERE clause.
  472.  
  473.      o  VIEWS AND NOTES
  474.  
  475.         In 1.0, if you had a VIEW with a NOTE column in it and you issued a
  476.         command involving a sort or a SORTED BY clause, your disk could
  477.         fill up very quickly.  In version 1.1, the temporary sort files
  478.         take up less space than they did in version 1.0.
  479.  
  480.      o  VIEWS AND COMPUTE
  481.  
  482.         In 1.0, COMPUTE on a VIEW showed rows = -1.  This was changed in
  483.         version 1.1 to N/A to be consistent with the rest of the product.
  484.  
  485.  
  486.      ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  487.      FORMS ANOMALIES ADDRESSED IN VERSION 1.1
  488.      ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  489.  
  490.      o  DEVELOPING A FORM - USING #DUP
  491.  
  492.         In version 1.0, if you used #DUP on a text field 40 characters or
  493.         more characters long, you might have seen the literal word #DUP
  494.         displayed in the field (instead of the value from the previous
  495.         row).  If you located a smaller field after the larger text field,
  496.         #DUP worked correctly.
  497.  
  498.      o  DEVELOPING A FORM - SECOND TABLE WITHOUT LOCATED FIELDS OR TEXT
  499.  
  500.         In 1.0, if you had a second table associated with a form, but no
  501.         fields located for it, sometimes blanks or underlines appeared in
  502.         the upper left hand corner of the form.
  503.  
  504.      o  DEVELOPING A FORM - MULTI-TABLE FORM
  505.  
  506.         In version 1.0, if you had 10 or more common columns defined, and
  507.         you pressed the [F8] key for the next table, you could get the
  508.         message:
  509.  
  510.         -WARNING- Table newtab has no common columns with the previous table(s)
  511.  
  512.         even though there were common columns.
  513.  
  514.      o  DEVELOPING A FORM - REORDER FIELDS
  515.  
  516.         In 1.0, When reordering the fields in forms, if you paged down
  517.         through the column list and then paged back up, R:BASE appeared to
  518.         skip a column.  Pressing [PgDn] displayed columns 1-15, 16-30, 31-
  519.         45 etc., [PgUp] showed 17-31, 1-15.  Column 16 was skipped.  The
  520.         missing column reappeared if you pressed [PgDn] again.
  521.  
  522.  
  523.  
  524.      MICRORIM ONLINE January 1987 -------------------------------- Page 8
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.      o  ENTER FORM OR EDIT USING A FORM - SCROLLING REGIONS
  532.  
  533.         In 1.0, when you entered or edited data in a region located on
  534.         pages two, three, four, or five of a form, only the top or bottom
  535.         tier of a region scrolled through the rows instead of the all of
  536.         the rows cycling through the entire region area.  Regions located
  537.         on page one worked correctly.  The data was not affected.
  538.  
  539.      o  ENTER FORM OR EDIT USI FORM - NOTE COLUMNS
  540.  
  541.         In version 1.0, when there were two or more fields with a NOTE data
  542.         type on the form, R:BASE did not check to see if you were exceeding
  543.         the maximum row length limit.  If you did exceeded the limit, you
  544.         could have seen a memory dump, or highlighted screen blocks.  To
  545.         get out of it, you needed to press [F2] to delete what was in the
  546.         field, then press [Esc] and choose "Save" (to exit the form), then
  547.         exit R:BASE, and reboot your computer.
  548.  
  549.      o  ENTER FORM OR EDIT USING A FORM - HELP SCREEN NOT CLEARING
  550.  
  551.         In 1.0, the help screen (brought up by pressing [F10]) was not
  552.         automatically cleared when called from the second page in a form.
  553.         You needed to press the [PgUp] or [PgDn] keys to clear the screen.
  554.         The [Esc] key only showed the highlighted fields through the help
  555.         screen.
  556.  
  557.      o  ENTER FORM - FROM FILE
  558.  
  559.         In 1.0, ENTER FORMNAME FROM FILENAME sometimes loaded inaccurate
  560.         CURRENCY values.
  561.  
  562.      o  ENTER FORM - AND [PGDN] PAST THE PAGES YOU HAVE
  563.  
  564.         Sometimes, in version 1.0, if you used the ENTER FORMNAME command
  565.         on a three-page form (with one table per page), the [PgDn] key
  566.         cycled past page three and would show spurious characters on the
  567.         screen.
  568.  
  569.      o  EDIT USING FORM - DELETING THE CONTENTS OF FIELDS
  570.  
  571.         In 1.0, if you used the EDIT USING command to edit your data and
  572.         attempted to delete the information in a field, your computer may
  573.         have stopped responding to keystrokes.  Rebooting the computer
  574.         fixed the problem.
  575.  
  576.      o  EDIT USING FORM - DATE AND TIME EXPRESSIONS
  577.  
  578.         In version 1.0, if a form had two expressions: TDATE = .#DATE and
  579.         CTIME = .#TIME (where TDATE and CTIME were column names), and you
  580.         entered the command: EDIT USING FORMNAME, sometimes only the second
  581.         expression would be evaluated.  If a dummy expression like DUMMY =
  582.         xxx was put first, then both the TDATE and CTIME expressions were
  583.         always evaluated.
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  
  590.      MICRORIM ONLINE January 1987 -------------------------------- Page 9
  591.  
  592.  
  593.  
  594.  
  595.      ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  596.      FUNCTIONS ANOMALIES ADDRESSED IN VERSION 1.1
  597.      ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  598.  
  599.      o  SLEN
  600.  
  601.         In 1.0, the following illegal command did not generate an error
  602.         message:
  603.  
  604.         SET V V1 TO "ABCDE";SET V V2 TO (SLEN(SGET(.V1,1,1)))
  605.  
  606.         The command is illegal because it has a function embedded as the
  607.         argument for a text function.  Once this illegal command was
  608.         executed, all further SLEN uses returned a value of null, even if
  609.         they had a valid expression.   To correct it, you had to exit from
  610.         R:BASE and then bring R:BASE back up again.
  611.  
  612.  
  613.      ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  614.      PROMPT-BY-EXAMPLE (PBE) ANOMALIES ADDRESSED IN VERSION 1.1
  615.      ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  616.  
  617.      o  CHANGE
  618.  
  619.         In 1.0, you could not select (ALL) columns when executing the
  620.         CHANGE command from the "All Commands" menu.  The screen displayed
  621.         the message:
  622.  
  623.         Choose a table -- press [Esc] for all
  624.  
  625.         but [Esc] took you back to PBE Main Menu.
  626.  
  627.      o  PRINT VIEW
  628.  
  629.         In 1.0, you could not print a report on a VIEW two times in a row
  630.         from PBE, you got the error message:
  631.  
  632.         Rptname is an undefined report.
  633.  
  634.      ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  635.      PROGRAMMING ANOMALIES ADDRESSED IN VERSION 1.1
  636.      ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  637.  
  638.      o  ERROR VARIABLES
  639.  
  640.         The error variable may have behaved inconsistently in version 1.0
  641.         depending on the command used and the setting of messages and error
  642.         messages.  For example, if you issued the RUN filename command, and
  643.         the file could not be found, the error variable was set to zero if
  644.         you had previously SET MESSAGES OFF and SET ERROR MESSAGES ON, but
  645.         if you had previously SET MESSAGES ON and SET ERROR MESSAGES OFF,
  646.         the error variable was set to 2004.
  647.  
  648.      o  LABEL
  649.  
  650.         In 1.0, the LABEL command could not be the last command in a
  651.         command file.  If it was, you got the error message:
  652.  
  653.         -ERROR- Unable to find matching LABEL for <labelname>
  654.  
  655.  
  656.      MICRORIM ONLINE January 1987 -------------------------------- Page 10
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.  
  665.      o  SET POINTER AND REMOVE COL
  666.  
  667.         In version 1.0, if you issued a SET POINTER #2 command on a table,
  668.         and then later attempted to remove a column in that table with the
  669.         REMOVE COL command, the SORTED BY clause no longer worked on any
  670.         command.  You needed to exit from  R:BASE and come back in to get
  671.         the SORTED BY clause to work again.  Entering SET POINTER #2 OFF
  672.         right before the REMOVE COL prevents the anomaly from occurring:
  673.  
  674.  
  675.      ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  676.      REPORTS ANOMALIES ADDRESSED IN VERSION 1.1
  677.      ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  678.  
  679.      o  PAGE HEADER
  680.  
  681.         In version 1.0, if only page headers, break footers, and other
  682.         footers were marked on a report (in other words, there were no
  683.         break header or detail lines), the page header would not print on
  684.         the first page of the report.
  685.  
  686.      o  LOCATING LOOKUP VARIABLES
  687.  
  688.         In 1.0, if you pressed [F6] to locate variables defined as lookups,
  689.         after some number all the markings on the left side would disappear
  690.         and the cursor number at the bottom stated that you were on line
  691.         800 (or something else that is invalid).  Recovering required
  692.         exiting from Reports EXPRESS.
  693.  
  694.      o  EXPRESSIONS
  695.  
  696.         If you defined an expression in a version 1.0 report, when the
  697.         variable name was less than 8 characters long and there were no
  698.         spaces around the equal sign, R:BASE picked up the first eight
  699.         characters as the variable name, including the =.  However, the
  700.         entire expressions past the = was correct.  For example, the
  701.         expression:
  702.  
  703.         VAR1=SUM OF COLUMN
  704.  
  705.         was written to the REPORTS table as
  706.  
  707.         VAR1=SUM = SUM OF COLUMN
  708.  
  709.         Also, if you made a mistake when typing in an expression in
  710.         reports, after the error message is given, you had to completely
  711.         retype the expression.  Version 1.1 allows you to edit what was
  712.         typed in initially.
  713.  
  714.      o  CONCATENATION
  715.  
  716.         In version 1.0, if you concatenated last name, first name, and
  717.         middle initial, and the middle initial field (TEXT 1) was NULL, all
  718.         fields located after the concatenated field on that line of the
  719.  
  720.  
  721.  
  722.      MICRORIM ONLINE January 1987 -------------------------------- Page 11
  723.  
  724.  
  725.  
  726.  
  727.  
  728.         report are sometimes shifted one character to the left when printed
  729.         to a printers or file.  On the screen the report looks fine.
  730.  
  731.      o  RUNNING OUT OF BUFFER SPACE
  732.  
  733.         Occasionally, Reports did not correctly allocate sufficient buffer
  734.         space to process all reports expressions and gave the message:
  735.  
  736.         -ERROR- Insufficient buffer space
  737.  
  738.  
  739.      o  LOOKUPS TO NOTE COLUMNS
  740.  
  741.         In version 1.0, you could occasionally get spurious characters
  742.         printed if your report did a lookup to a NOTE column.
  743.  
  744.  
  745.      o  VIEWS AND LOOKUPS
  746.  
  747.         In a version 1.0 report based on a VIEW, sometimes R:BASE added a
  748.         column value twice if a lookup it was doing failed.  Other times,
  749.         if the report (based on a VIEW) was looking up a value in a table
  750.         outside of the view, R:BASE stopped processing rows in the view
  751.         after a lookup failed.
  752.  
  753.      ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  754.      RBDEFINE ANOMALIES ADDRESSED IN VERSION 1.1
  755.      ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  756.  
  757.      o  RESERVED COLUMN NAMES
  758.  
  759.         Version 1.0 Definition EXPRESS allowed you to use the reserved
  760.         words FNAME, RNAME, FDATA, and RDATA as columns with any data type.
  761.  
  762.      o  MODIFY EXISTING TABLE
  763.  
  764.         In version 1.0, if you suddenly changed your mind in the middle of
  765.         defining a new TEXT column to insert into an existing table using
  766.         Definition EXPRESS, and pressed the [Esc] key twice after stating
  767.         the data type was TEXT but before giving the length of the column,
  768.         and then chose to leave Definition EXPRESS, you got the message,
  769.         "Adjusting table" and the database may be corrupted.
  770.  
  771.  
  772.      ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  773.      RBEDIT ANOMALIES ADDRESSED IN VERSION 1.1
  774.      ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  775.  
  776.      Any file with special characters (such as form feeds) becomes a
  777.      playback file with [ENTER] and other keystrokes entered directly into
  778.      the file, when the file is edited with RBEDIT.  Version 1.1 gives you
  779.      a choice when editing a file with these special ASCII characters in
  780.      it.
  781.  
  782.  
  783.  
  784.  
  785.  
  786.  
  787.  
  788.      MICRORIM ONLINE January 1987 -------------------------------- Page 12
  789.  
  790.  
  791.  
  792.  
  793.  
  794.  
  795.      """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  796.      IMPROVE SECURITY AND VERIFY ENTERED PASSWORDS
  797.      """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  798.      DATE      :  12/86                   NUMBER       :  EX-12-2
  799.      PRODUCT   :  R:BASE SYSTEM V         VERSIONS     :  ALL
  800.      CATEGORY  :  PASSWORDS               SUBCATEGORY  :  SECURITY/PROTECTION
  801.      """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  802.  
  803.      NEED:   The USER command provides excellent security because as the
  804.      operator is keying in a password, it is not displayed on the screen.
  805.      However, the operator is not able to visually verify the password so I
  806.      need a way to verify that the correct password has been entered.
  807.  
  808.      I want the operator to know immediately rather than having to wait for
  809.      an access to a table or view to be denied.  If access is denied in the
  810.      middle of a custom written program, it will be inconvenient for the
  811.      operator to go back to the beginning and enter the password again.
  812.  
  813.      In addition, I want the procedure to be easily tacked onto the
  814.      beginning of macros and command files so that the correct password is
  815.      entered for access to the tables and views in that procedure.  At the
  816.      end of the procedure, I want to erase the password.  This will help to
  817.      strengthen the overall security for my application.
  818.  
  819.  
  820.  
  821.      SOLUTION:   Frank Aquiningoc shares the following basic building block
  822.      for meeting this need:
  823.  
  824.      The following is a simple password verification subroutine which does
  825.      not know the password of any table or view and can therefore be used
  826.      generically and modified to fit particular circumstances.
  827.  
  828.      This simple subroutine assumes that all or one table, view, or form is
  829.      password-protected.  You can expand this procedure and use it for
  830.      other individual table accesses for a more sophisticated system.
  831.  
  832.      THE BASIC CONCEPT:
  833.      =================
  834.  
  835.      The subroutine follows these six steps.
  836.  
  837.      1.  Sets the error variable.
  838.  
  839.      2.  Asks the operator for his or her password.
  840.  
  841.      3.  Selects from the table or view using a WHERE clause that will
  842.          never be true.  In this example I check for an account number
  843.          equal to zero because I know that all account numbers are greater
  844.          than zero.  Since account number is a keyed column, I know that
  845.          the access check will be fast.
  846.  
  847.      4.  Checks the error variable for invalid user access.
  848.  
  849.      5.  If the operator has entered an invalid password, the user has two
  850.          more chances to enter a valid password.  If the password is valid,
  851.  
  852.  
  853.  
  854.      MICRORIM ONLINE January 1987 -------------------------------- Page 13
  855.  
  856.  
  857.  
  858.  
  859.  
  860.          a flag variable named VALID (or any name you want) is set to
  861.          "YES".  Otherwise, VALID has a value of "NO"
  862.  
  863.      6.  The subroutine ends and the calling program uses the flag variable
  864.          VALID to allow or deny access to the program routines that use the
  865.          table or view that requires that password for access.
  866.  
  867.      THE SUBROUTINE LISTING
  868.      ======================
  869.  
  870.      *( PASSWORD.CMD                )
  871.      *( Author:  Frank Aquiningoc   )
  872.      *( Date:    December 23, 1986  )
  873.      *( Program: This program prompts the user for password input then verifies)
  874.      *(          the password based upon the table or view to be accessed.     )
  875.      *(          The user has chances to enter the password, then the program  )
  876.      *(          will return with the flag variable VALID set to YES or NO.    )
  877.      *(          This program assumes that the database has been opened and a  )
  878.      *(          MPW {modify password} has been defined                        )
  879.  
  880.      SET ERROR MESSAGE OFF
  881.      SET MESSAGE OFF
  882.      SET ESCAPE OFF
  883.      CLEAR CNTLOOP VALID
  884.      SET VAR CNTLOOP TO 1
  885.      SET VAR VALID TO "NO"
  886.      SET ERROR VAR ERRORVAR
  887.      NEWPAGE
  888.  
  889.      WHILE CNTLOOP LE 3 THEN
  890.  
  891.          USER
  892.  
  893.          *( Change the next line to match your table {rather than accounts} and)
  894.          *( your "never true" WHERE clause {rather than ACCT# = 0}.            )
  895.          *( Note that the EDIT command is used because this example is testing )
  896.          *( a modify password {MPW}.  If you were testing a read password {RPW})
  897.          *( you could use the SELECT command instead.                          )
  898.  
  899.          EDIT ALL FROM accounts WHERE acct# = 0
  900.  
  901.                 *(   Error variables that apply here are:          )
  902.                 *(   2039 - unauthorized access to the table       )
  903.                 *(   133  - the USER and OWNER password must match )
  904.                 *(   303  - the USER and OWNER password must match )
  905.                 *(   check for these error values, if they occur,  )
  906.                 *(   the user password is wrong.  Loop back to     )
  907.                 *(   have the user reenter password                )
  908.  
  909.         IF ERRORVAR = 2039 OR ERRORVAR = 133 OR ERRORVAR = 303 THEN
  910.  
  911.              BEEP
  912.              WRITE "INVALID PASSWORD"   AT   1,25
  913.              SET VAR CNTLOOP TO (.CNTLOOP + 1)
  914.              ELSE
  915.  
  916.                  *( set loop to 3 to exit out of loop )
  917.  
  918.  
  919.  
  920.      MICRORIM ONLINE January 1987 -------------------------------- Page 14
  921.  
  922.  
  923.  
  924.  
  925.  
  926.                  *( set flag valid to yes             )
  927.                  SET VAR CNTLOOP TO 4
  928.                  SET VAR VALID TO "YES"
  929.  
  930.          ENDIF
  931.          NEWPAGE
  932.  
  933.      ENDWHILE
  934.      RETURN
  935.  
  936.      FURTHER MODIFICATIONS
  937.      =====================
  938.  
  939.      You may wish to further modify this subroutine and include an
  940.      appropriate version of it at the beginning of every custom macro or
  941.      command file that you write.  Combining this subroutine with read and
  942.      modify passwords on your tables and views can provide powerful
  943.      security for your sensitive data.  If you follow this option, include
  944.      the following command at the close of each macro or command file:
  945.  
  946.      USER NONE
  947.      CLEAR VALID
  948.  
  949.      This will clear the current user password from memory and will remove
  950.      the VALID variable from memory.   Now, when control is passed back to
  951.      the keyboard at the completion of the procedure, an unauthorized
  952.      person cannot gain access.  In addition, SET ESC OFF (at the
  953.      beginning) to prevent interruption of the macro or command file, and
  954.      make sure that the macro has been encoded by running it through
  955.      Application EXPRESS or CodeLock.
  956.  
  957.  
  958.  
  959.  
  960.  
  961.  
  962.  
  963.  
  964.  
  965.  
  966.  
  967.  
  968.  
  969.  
  970.  
  971.  
  972.  
  973.  
  974.  
  975.  
  976.  
  977.  
  978.  
  979.  
  980.  
  981.  
  982.  
  983.  
  984.  
  985.  
  986.      MICRORIM ONLINE January 1987 -------------------------------- Page 15
  987.